#include "unistd.h"
#include "stdio.h"
#include "sys/types.h"

//argv: 第一个元素是执行程序的路径
int main(int argc, char const *argv[])
{
    printf("main进程(%d)开始执行\n",getpid());

    pid_t pid = fork();

    if(pid == 0)//当前执行的是子进程
    {
        printf("子进程(%d)\n",getpid());
        //执行另一个程序 02_other.c
        char *path = "other";
        char *argv[] = {path,"abc",NULL};//最后一个元素必须是NULL
        char *envp[] = {NULL};//表示使用默认的环境变量
        //execve:如果找到了对应程序,内部会先清空当前进程的内存,然后加载指定程序来生成对应的内存空间数据
        execve(path,argv,NULL);
        //如果找不到对应程序,不会下来
        printf("execve执行失败\n");

    }
    else//当前进行的是父进程,(main)
    {
        printf("父进程(%d)正在执行\n",getpid());
    }
    return 0;
}
